import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'path'

// 自定义插件确保JS文件返回正确的MIME类型
function correctMimeTypePlugin() {
  return {
    name: 'correct-mime-types',
    configureServer(server) {
      // 拦截静态文件请求
      server.middlewares.use((req, res, next) => {
        if (req.url && req.url.endsWith('.js')) {
          // 对于JS文件，手动设置正确的Content-Type
          res.setHeader('Content-Type', 'application/javascript')
        }
        next()
      })
    },
    // 为预览服务器也添加相同的逻辑
    configurePreviewServer(server) {
      server.middlewares.use((req, res, next) => {
        if (req.url && req.url.endsWith('.js')) {
          res.setHeader('Content-Type', 'application/javascript')
        }
        next()
      })
    }
  }
}

// https://vite.dev/config/
export default defineConfig({
  // 设置基础路径为相对路径
  base: './',
  plugins: [vue(), correctMimeTypePlugin()],
  // 路径别名配置
  resolve: {
    alias: {
      '@': path.resolve(__dirname, 'src')
    }
  },
  server: {
    // 启用历史模式路由支持
    historyApiFallback: true,
    // 开发环境代理配置
    proxy: {
      '/api': {
        target: 'http://10.1.6.130',
        changeOrigin: true,
        rewrite: (path) => path
      }
    }
  },
  preview: {
    // 预览服务器也使用相同的配置
    historyApiFallback: true
  },
  // 构建配置
  build: {
    // 确保生成的HTML中使用正确的script类型
    assetsInlineLimit: 0
  }
})
